import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'

export default defineConfig({
  server: {
    host: '192.168.100.6',
    hmr: true,
  },
  plugins: [
    vue(),
    AutoImport({
      imports: ['vue', 'vue-router', 'pinia'], // 自动导入vue等模块
      dts: 'types/auto-imports.d.ts', // 在指定目录生成该文件，作用是提供类型约束
    }),
    Components({
      resolvers: [AntDesignVueResolver({ importStyle: 'less' })],
      dirs: ['src/components'],
      dts: 'types/components.d.ts',
    }),
    createSvgIconsPlugin({
      // 指定需要缓存的图标文件夹
      iconDirs: [path.resolve(process.cwd(), 'src/assets')],
      // 指定symbolId格式
      symbolId: 'icon-[dir]-[name]',
    }),
  ],
  css: {
    preprocessorOptions: {
      less: {
        modifyVars: {
          // 此处也可设置直角、边框色、字体大小等
        },
        javascriptEnabled: true,
        lessOptions: {
          javascriptEnabled: true,
        },
      },
    },
  },
  build: {
    outDir: 'yuntu-ui', //输出文件名称
    lib: {
      entry: path.resolve(__dirname, './src/package/index.js'), //指定组件编译入口文件
      name: 'yuntu-ui',
      fileName: 'yuntu-ui',
    }, //库编译模式配置
    rollupOptions: {
      // 确保外部化处理那些你不想打包进库的依赖
      external: ['vue'],
      output: {
        // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
        globals: {
          vue: 'Vue',
        },
      },
    }, // rollup打包配置
  },
  resolve: {
    alias: [
      {
        find: '@',
        replacement: path.resolve('src') + '/',
      },
    ],
  },
})
